﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Aprendete.Models
{
    public class UsuarioRepository
    {
        
        private DataClasses1DataContext db = new DataClasses1DataContext();

        public bool ExisteUsuario(string username)
        {
            bool existe = false;

            foreach (Usuario user in db.Usuarios)
            {
                if (user.UserName.Trim().Equals(username)) 
                {
                    existe = true; 
                }
            }

            return existe;
        }

        public Usuario GetUsuarioxIdentity(string identity) 
        {
            return db.Usuarios.SingleOrDefault(d => d.UserName.Trim() == identity);
            
        }

        public Usuario GetUsuarioxid(int id)
        {
            return db.Usuarios.SingleOrDefault(d => d.UsuarioID == id);
        }

        public Usuario GetUsuarioxUserName(string usuario)
        {
            Usuario user = db.Usuarios.SingleOrDefault(d => d.UserName.Equals(usuario));
            return user;
        }

        public List<Usuario> GetProfesores()
        {
            List<Usuario> profesores = new List<Usuario>();

            foreach (Usuario user in db.Usuarios)
            {
                if (user.EsProfesor)
                {
                    profesores.Add(user);
                }
            }

            return profesores;

        }
        
        public bool Unico(Usuario usuario)
        {
            bool es = true;

            foreach (Usuario user in db.Usuarios) 
            {

                if (user.UsuarioID != usuario.UsuarioID)
                {
                    if (user.Rut.Equals(usuario.Rut) || user.Mail.Equals(usuario.Mail) || user.UserName.Equals(usuario.UserName))
                    {
                        es = false;
                    }
                }

            }

            return es;

        }

        public IQueryable<Usuario> GetUsuariosTodos()
        {
            return db.Usuarios;
        }
        
        public void Add(Usuario Usuario)
        {
            db.Usuarios.InsertOnSubmit(Usuario);
            db.SubmitChanges();
        }

        public void Delete(Usuario Usuario)
        {
            db.Usuarios.DeleteOnSubmit(Usuario);
            db.SubmitChanges();
        }
       
        public void Save()
        {
            db.SubmitChanges();
        }

        public List<Usuario> GetUsuariosTutorias(int tutoria)
        {
            List<Usuario> inscritos = new List<Usuario>();

            List<Inscrito> lista = db.Inscritos.Where(d => (d.TutoriaID == tutoria)).ToList<Inscrito>();

            foreach (Inscrito I in lista)
            {
                inscritos.Add(new UsuarioRepository().GetUsuarioxid(I.UsuarioID));
            }

            return inscritos;

        }
        
    }
}